package com.tituaem.utilityclass;

import com.tituaem.operacionesBd.Consultas;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class llenarTabla {
    
    private Consultas con;
    private DefaultTableModel modelo;

    public llenarTabla() throws ClassNotFoundException, SQLException {
        con = new Consultas();
        modelo=new DefaultTableModel();
    }
    
    public DefaultTableModel llenarTituloColumnas() throws SQLException{
        ResultSet rs=con.obtenerTablaProyectos();
        //tablaProyectosJTlb.setModel(modelo);
        // Se obtiene los metadatos de la consulta. Con ellos
        // podemos obtener el número de columnas y el nombre
        // de las mismas.
        ResultSetMetaData metaDatos = rs.getMetaData();            
        // Se obtiene el numero de columnas.
        int numeroColumnas = metaDatos.getColumnCount();            
        // Se obtienen las etiquetas para cada columna
        Object[] etiquetas = new Object[numeroColumnas-1];
        for (int i = 0; i < numeroColumnas-1; i++){
            etiquetas[i] = metaDatos.getColumnLabel(i+2);
        }            
        // Se meten las etiquetas en el modelo. El numero
        // de columnas se ajusta automáticamente.
        modelo.setColumnIdentifiers(etiquetas);
        return modelo;
    }
    
    public DefaultTableModel llenarFilasDatos() throws SQLException{
        ResultSet rs=con.obtenerTablaProyectos();
        //tablaProyectosJTlb.setModel(modelo);
        // Para cada registro de resultado en la consulta 
        while (rs.next()){
            // Se crea y rellena la fila para el modelo de la tabla.
            Object[] datosFila = new Object[modelo.getColumnCount()];
            for (int i = 0; i < modelo.getColumnCount(); i++){
                datosFila[i] = rs.getObject(i+2);
            }
            modelo.addRow(datosFila);
        }
        return modelo;
    }    
    
    public int verificarIdProyecto(JTable tabla) throws SQLException {
        TableModel tablaModelo;
        tablaModelo = (TableModel) tabla.getModel();
        boolean avanzar = true;
        String titProy=null;
        String fecha=null;
        int id = 0;
        int fila = tabla.getSelectedRow();
        int columna = tabla.getSelectedColumn();
        if (fila == -1) {
            avanzar = false;
        } 
        else {
            if (columna == -1) {
                avanzar = false;
            }
        }
        if (avanzar) {
            titProy=tablaModelo.getValueAt(fila, 0).toString();
            fecha=tablaModelo.getValueAt(fila, 4).toString();
            id=con.obtenerIdProyecto(titProy, fecha);
        }
        return id;
    }
    
    public void actualizarTabla(int id, JTable tabla) throws SQLException{
        TableModel tablaModelo;
        tablaModelo = (TableModel) tabla.getModel();
        boolean avanzar = true;
        String titProy=null;
        String modalidad=null;
        String lugar=null;
        String hora=null;
        String fecha=null;
        int acc=0;
        int fila = tabla.getSelectedRow();
        int columna = tabla.getSelectedColumn();
        if (fila == -1) {
            avanzar = false;
        } 
        else {
            if (columna == -1) {
                avanzar = false;
            }
        }
        if (avanzar) {
            titProy=tablaModelo.getValueAt(fila, 0).toString();
            modalidad=tablaModelo.getValueAt(fila, 1).toString();
            lugar=tablaModelo.getValueAt(fila, 2).toString();
            hora=tablaModelo.getValueAt(fila, 3).toString();
            fecha=tablaModelo.getValueAt(fila, 4).toString();
            acc=con.actualizarProyecto(id, titProy, modalidad, lugar, hora, fecha);
            if(acc==1){
                System.out.println("Correcto");
            }
            else{
                System.out.println("Incorrecto");
            }
        }
    }
}